﻿#define _CRT_SECURE_NO_WARNINGS 1
//1.
//编写一个函数，计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内(0~127 ，包括 0 和 127)，
//换行表示结束符，不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
//例如，对于字符串 abaca 而言，有 a、b、c 三种不同的字符，因此输出 3 。
//数据范围：
//1≤n≤500

#include <stdio.h>
#include <stdbool.h>

int count(const char* str) {
    bool ascii[128] = { false }; 

    int count = 0;
    while (*str) {
        if (*str >= 0 && *str <= 127 && !ascii[*str]) {
            ascii[*str] = true;
            count++;
        }
        str++;
    }
    return count;
}

int main() {
    char input[500];
    scanf("%s", input);
    int result = count(input);
    printf("%d\n", result);
    return 0;
}

//2.
//给定一个大小为 n 的数组 nums ，返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
//你可以假设数组是非空的，并且给定的数组总是存在多数元素。
#include <stdio.h>

int majorityElement(int* nums, int numsSize) {
    int candidate = nums[0];
    int count = 1;

    for (int i = 1; i < numsSize; i++) {
        if (nums[i] == candidate) {
            count++;
        }
        else {
            count--;
            if (count == 0) {
                candidate = nums[i];
                count = 1;
            }
        }
    }

    return candidate;
}